package com.sayimo.maker.mall.goods.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.sayimo.framework.exception.DaoException;
import com.sayimo.maker.mall.goods.vo.GoodsList;



/**
 * @Project: schoolmallapi
 * @ClassName: GoodsListInterfaceDao
 * @Description: 商品列表dao
 * @Author: 曹频辉
 * @Date: 日期：2016年1月4日 时间：上午10:09:03
 * @Version 1.0.0
 */
public interface GoodsListInterfaceDao {
	
	/**
	 * 
	* @Title: getLogisticsCostByAreaCode 
	* @Description: 根据地址编码查询 运费
	* @param areaCode
	* @param goodsId
	* @return
	* @throws DaoException
	* @return BigDecimal
	* @throws
	 */
	public BigDecimal  getLogisticsCostByAreaCode(String areaCode,Integer goodsId,Integer logisticsCostId)throws DaoException;
	
	/**
	 * @Title: getGoodsByGoodsId
	 * @Description: 通过商品Id 查询商品
	 * @param goodsId
	 * @throws DaoException
	 * @return Map
	 */
	@SuppressWarnings("rawtypes")
	public Map getGoodsByGoodsId(Integer goodsId) throws DaoException;

	/**
	 * @Title: getPhotosBygoodsId
	 * @Description: 商品图片
	 * @param goodsId
	 * @throws DaoException
	 * @return List
	 */
	@SuppressWarnings("rawtypes")
	public List getPhotosBygoodsId(Integer goodsId) throws DaoException;

	/**
	 * @Title: getAllNormsByGoodsId
	 * @Description: 商品规格
	 * @param goodsId
	 * @param normsValueId
	 * @throws DaoException
	 * @return Map
	 */
	@SuppressWarnings("rawtypes")
	public Map getAllNormsByGoodsId(Integer goodsId,Integer normsValueId) throws DaoException;

	/**
	 * @Title: queryGoodsListById
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月5日 时间：上午11:40:05
	 * @Description: 按ID查询
	 * @param id
	 * @throws DaoException
	 * @return GoodsList
	 * @Version 1.0.0
	 */
	public GoodsList queryGoodsListById(Integer id) throws DaoException;
	
	/**
	 * 
	 * @MethodName searchGoodsByName
	 * @Description 商品首页搜索
	 * 
	 * @author chenpy
	 * @date 2016年1月6日 下午3:47:58
	 * @param 
	 * @return List<GoodsList>
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings("rawtypes")
	public List searchGoodsByName(String goodsName) throws DaoException;
	
	/**
	 * 
	 * @MethodName getGoodsCount
	 * @Description 首页商品统计
	 * 
	 * @author chenpy
	 * @date 2016年1月6日 下午3:47:58
	 * @param 
	 * @return 
	 * @VERSION 1.0.0
	 */
	public Integer getGoodsCount() throws DaoException;
	
	/**
	 * 
	 * @MethodName selectGoodsInfoByOrdersIds
	 * @Description Description
	 * 
	 * @author chenpy
	 * @date 2016年1月8日 下午4:52:08
	 * @param 
	 * @return List
	 * @VERSION 1.0.0
	 */
	public List<GoodsList> selectGoodsInfoByOrdersIds(List<Integer> ordersIds) throws DaoException;
	
	/**
	 * 
	 * @MethodName batchUpdateGoodsList
	 * @Description 批量修改商品信息
	 * 
	 * @author chenpy
	 * @date 2016年1月8日 下午5:20:16
	 * @param 
	 * @return int
	 * @VERSION 1.0.0
	 */
	public int batchUpdateGoodsList(List<GoodsList> goodsLists) throws DaoException;
	
	
	/** 
	* @Title: queryGoodsListByIds 
	* @Author: 王瑞清
	* @Date:日期：2016年1月9日  时间：上午11:39:57
	* @Description: 按id集合查询
	* @param ids
	* @throws DaoException
	* @return Map<String,Object>
	* @Version 1.0.0
	*/ 
	public List<Object> queryGoodsListProviderByIds(List<Integer> ids) throws DaoException;
	
	/** 
	 * @Title: queryGoodsBrokerageById 
	 * @Author: chenpy
	 * @Date:日期：2016年1月13日  时间：下午2：24
	 * @Description: 获取商品佣金
	 * @param ids
	 * @throws DaoException
	 * @return Map<String,Object>
	 * @Version 1.0.0
	 */ 
	public Map queryGoodsBrokerageById(Integer id) throws DaoException;
	/**
	 * 
	* @Title: getIdentifier 
	* @Description: 获取活动关联商品
	* @param activityId
	* @return
	* @throws DaoException
	* @return String
	* @throws
	 */
	public String getActivityIdentifier(Integer activityId)throws DaoException;
	/**
	 * 
	* @Title: getGoodsInfoByGoodsId 
	* @Description: 根据商品ID 获取商品信息
	* @param goodsId
	* @return
	* @throws DaoException
	* @return Map<String,Object>
	* @throws
	 */
	public Map<String ,Object> getGoodsInfoByGoodsId(Integer goodsId,String goodsName)throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:getActivityGoodsInfoByGoodsId
	 * @Description:获取活动商品信息
	 * @param goodsId
	 * @param goodsName
	 * @param activityId
	 * @return
	 * @throws DaoException
	 * @Date 2016年8月12日,下午2:13:06
	 */
	public Map<String ,Object> getActivityGoodsInfoByGoodsId(Integer goodsId,String goodsName,Integer activityId)throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:getMoldbabyGoodsInfoByGoodsId
	 * @Description:获取爆款商品信息
	 * @param goodsId
	 * @param goodsName
	 * @param identifier
	 * @return
	 * @throws DaoException
	 * @Date 2016年8月12日,下午2:15:38
	 */
	public Map<String ,Object> getMoldbabyGoodsInfoByGoodsId(Integer goodsId,String goodsName,String identifier)throws DaoException;
	
	/**
	 * 
	* @Title: getProviderId 
	* @Author: 田超
	* @Date:日期：2016年6月7日  时间：下午3:33:54
	* @Description: 根据供应商的providerCode获得对应的id
	* @param providName
	* @return
	* @throws DaoException
	* @return List
	* @Version 1.0.0
	 */
	public GoodsList getProviderIdByCode(String providerCode) throws DaoException;
	
	/**
	 * 
	* @Title: updateStatus 
	* @Author: 田超
	* @Date:日期：2016年6月28日  时间：下午5:52:38
	* @Description: 更新商品的状态
	* @return
	* @throws DaoException
	* @Version 1.0.0
	 */
	public Integer updateStatus(Map<String, Object> paramMap) throws DaoException;
	
	/**
	 * 
	* @Title: queryProviderId 
	* @Author: 田超
	* @Date:日期：2016年7月12日  时间：下午3:09:32
	* @Description: 根据商品id查询商品的供应商
	* @param goodsId
	* @return
	* @throws DaoException
	* @return GoodsList
	* @Version 1.0.0
	 */
	public GoodsList queryProviderId(Integer goodsId)throws DaoException;
	
	/**
	 * 
	* @Title: querySkucodeById 
	* @Author: 田超
	* @Date:日期：2016年7月12日  时间：下午2:42:20
	* @Description: 根据商品ID和规格id获取skucode
	* @param paramMap
	* @return
	* @throws DaoException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String, Object> querySkucodeById(Map<String, Object> paramMap)throws DaoException ;
	
	/**
	 * 
	* @Title: queryProviderByCode 
	* @Author: 田超
	* @Date:日期：2016年7月12日  时间：下午6:19:03
	* @Description: 根据code查询供应商id
	* @param providerCode
	* @return
	* @throws DaoException
	* @return Map<String,Object>
	* @Version 1.0.0
	 */
	public Map<String, Object> queryProviderByCode(String providerCode) throws DaoException;
	
	/**
	* @Title: updateTimeComparison 
	* @Author: 李强
	* @Date:日期：2016年7月20日
	* @Description: 时间戳对比
	* @param 
	* @return
	* @throws DaoException
	* @return String
	* @Version 1.0.0
	 */
	public Map updateTimeComparison() throws DaoException;
	/**
	 * @Package com.sayimo.school.mall.module.goods.dao
	 * @Author TANXIN
	 * @MethodName:queryActivityGoodsInfoByGoodsId
	 * @Description:获取活动商品价格和数量
	 * @param goodsId
	 * @param identifier
	 * @return
	 * @throws DaoException
	 * @Date 2016年8月12日,下午3:20:44
	 */
	public Map<String, Object> queryActivityGoodsInfoByGoodsId(Integer goodsId,String identifier) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.goods.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 
	  * @param 
	  * @throws 
	  * @return Map<String,Object>
	  * @date 2016年9月12日
	  */ 
	public Map<String, Object> getGoodsNormsValueInfo(Map paramMap) throws DaoException;
	
	/** 
	  * @package com.sayimo.school.mall.module.goods.dao
	  * @author chenpy
	  * @Title:  
	  * @Description: 统计商品被收藏次数和对应供应商下共有多少商品
	  * @param 
	  * @throws 
	  * @return Map
	  * @date 2016年10月27日
	  */ 
	public Map getStatisGoodsInfo(Map<String, Object> paramMap) throws DaoException; 
	/**
	 * @Package com.sayimo.maker.mall.goods.dao
	 * @Author TANXIN
	 * @MethodName:unionShopList
	 * @Description:联盟商家列表
	 * @return
	 * @throws DaoException
	 * @Date 2017年2月15日,上午9:44:15
	 */
	public List unionShopList(Map<String, Object> paramMap) throws DaoException ;
	/**
	 * @Package com.sayimo.maker.mall.goods.dao
	 * @Author TANXIN
	 * @MethodName:unionShopById
	 * @Description:联盟商家详情
	 * @param paramMap
	 * @return
	 * @throws DaoException
	 * @Date 2017年2月18日,下午2:09:23
	 */
	public Map unionShopById(Map<String, Object> paramMap) throws DaoException ;
	/**
	 * @Package com.sayimo.maker.mall.goods.dao
	 * @Author 谭新
	 * @MethodName: getNormsValueIdByGoodsId
	 * @Description:通过商品Id 查询商品最小规格值id
	 * @return Integer
	 * @Date 2017年4月10日,上午11:32:59
	 */
	public Integer getNormsValueIdByGoodsId(Integer goodsId) throws DaoException;

}
